home *** CD-ROM | disk | FTP | other *** search
/ PC User 2003 September / Australian PC User - September 2003 (CD1).iso / magstuff / web / files / dwmx61.exe / Disk1 / data1.cab / Configuration_En / Objects / Common / Hyperlink.js < prev    next >
Encoding:
JavaScript  |  2002-11-25  |  5.0 KB  |  183 lines

  1. // Copyright 2001-2002 Macromedia, Inc. All rights reserved
  2.  
  3. var helpDoc = MM.HELP_objHyperlink;
  4.  
  5. //---------------   GLOBAL CONSTANTS   ---------------
  6.  
  7. var DEFAULT_TARGETS = new Array("","_blank","_parent","_self","_top");
  8. var SCHEMES = new Array("http://","https://", "file://", "ftp://", "gopher://", "mailto://", "news://", "nntp://", "rlogin://", "telnet://", "tn3270://", "wais://");
  9.  
  10.  
  11. //---------------   GLOBAL VARIABLES   ---------------
  12.  
  13. var LIST_LINKS;
  14. var LIST_TARGETS;
  15. var TEXT_TEXT;
  16. var TEXT_TITLE;
  17. var TEXT_AKEY;
  18. var TEXT_TABIX;
  19. var DOC_TARGETS = new Array(); // Targets gathered from document. 
  20.  
  21. //---------------     API FUNCTIONS    ---------------
  22.  
  23. function isDOMRequired() { 
  24.     // Return false, indicating that this object is available in code view.
  25.     return false;
  26. }
  27.  
  28. function getNamedAnchors(){
  29.     var dom = dw.getDocumentDOM();
  30.     var allAnchors = dom.getElementsByTagName("A");
  31.     var anchorName;
  32.     for (var i=0; i < allAnchors.length; i++){
  33.         if (allAnchors[i]){
  34.             anchorName = allAnchors[i].getAttribute("NAME");
  35.             if (anchorName){
  36.                 LIST_LINKS.append("#" + anchorName,"#" + anchorName);
  37.             }
  38.         }else{
  39.             break;
  40.         }
  41.     }
  42. }
  43.  
  44. function getTargets(){
  45.     var dom = dw.getDocumentDOM();
  46.     // If document is within frameset, add frame names
  47.     // to target list
  48.     var frameNames = dom.getFrameNames();
  49.     for (var i=0; i < frameNames.length; i++){
  50.       LIST_TARGETS.append(frameNames[i],frameNames[i]);
  51.     }
  52.       
  53.     // Check document for additional targets
  54.   var links = dom.getElementsByTagName('A');
  55.   for (var q=0; q < links.length; q++){
  56.       if (links[q]){
  57.             if (links[q].getAttribute("target")){
  58.             add = true;
  59.           for (var y=0; y < DOC_TARGETS.length; y++){
  60.               if (DOC_TARGETS[y] == links[q].getAttribute("target")){
  61.                 add = false;
  62.               break;
  63.             }
  64.           }
  65.           if (add){
  66.             DOC_TARGETS.push(links[q].getAttribute("target"));
  67.           }
  68.             }
  69.         }else{
  70.             break;
  71.         }
  72.     }
  73.           
  74.   var allTargets = LIST_TARGETS.getValue('all');
  75.   for (var p=0; p < DOC_TARGETS.length; p++){
  76.     var addTarget = true;
  77.     for (var x=0; x < allTargets.length; x++){
  78.       if (allTargets[x] == DOC_TARGETS[p]){
  79.         addTarget = false;
  80.         break;
  81.       }
  82.     }
  83.     if (addTarget){
  84.       LIST_TARGETS.append(DOC_TARGETS[p],DOC_TARGETS[p]);
  85.     }
  86.   }
  87.     // set selectedIndex to edit field
  88.     LIST_TARGETS.setIndex(-1);
  89. }
  90.  
  91. function objectTag(){
  92.     var dom = dw.getDocumentDOM();
  93.   var linkStr = '<a href=';
  94.   if (LIST_LINKS && LIST_LINKS.get()  != ""){
  95.       linkStr += '"' + LIST_LINKS.get() + '"';
  96.   }else{
  97.     linkStr += '"#"';
  98.   }
  99.     if (TEXT_TABIX && TEXT_TABIX.value != ""){
  100.         linkStr += ' tabindex="' + TEXT_TABIX.value + '"';
  101.     }
  102.     if (TEXT_TITLE && TEXT_TITLE.value != ""){
  103.         linkStr += ' title="' + TEXT_TITLE.value + '"';
  104.     }
  105.     if (TEXT_AKEY && TEXT_AKEY.value != ""){
  106.         linkStr += ' accesskey="' + TEXT_AKEY.value + '"';
  107.     }
  108.     if (LIST_TARGETS && LIST_TARGETS.get() != ""){
  109.         linkStr += ' target="' + LIST_TARGETS.get() + '"';
  110.     }
  111.   if (TEXT_TEXT && TEXT_TEXT.value != ""){
  112.       linkStr += '>' + TEXT_TEXT.value + '</a>';
  113.   }else if (LIST_LINKS && LIST_LINKS.get()  != ""){
  114.     linkStr += '>' + LIST_LINKS.get() + '</a>';
  115.   }else{
  116.     linkStr += '>#</a>';
  117.   }
  118.     
  119.     if (dw.getFocus() == 'html' || dw.getFocus() == 'textView'){
  120.         var range = dom.source.getSelection();
  121.         dom.source.replaceRange(range[0],range[1],linkStr);
  122.     }else{
  123.         dom.insertHTML(linkStr,false);
  124.     }
  125.     
  126.     return;
  127. }
  128.  
  129. //---------------    LOCAL FUNCTIONS   ---------------
  130. function initUI() {
  131.     var dom = dw.getDocumentDOM();
  132.     LIST_LINKS = new ListControl('linkPath');
  133.     getNamedAnchors();
  134.   LIST_LINKS.set("",-1);
  135.     
  136.     LIST_TARGETS = new ListControl('linkTarget');
  137.     // Initialize target list
  138.     LIST_TARGETS.setAll(DEFAULT_TARGETS,DEFAULT_TARGETS);
  139.     // Add targets found in current document and framset
  140.     getTargets();
  141.   LIST_TARGETS.set("",-1);
  142.  
  143.     
  144.     TEXT_TEXT = document.theForm.linkText;
  145.     TEXT_TITLE = document.theForm.linkTitle;
  146.     TEXT_AKEY = document.theForm.accessKey;
  147.     TEXT_TABIX = document.theForm.tabIndex;
  148.     
  149.     
  150.     // If we're in code view, automatically populate the
  151.     // Text field with the selected text, and the link field
  152.     // with the selected text if it appears to be a link.
  153.     if (dw.getFocus() == 'html' || dw.getFocus() == 'textView'){
  154.         // populate Text field with selection even if it includes
  155.         // tags
  156.         var theSel = dom.source.getSelection();
  157.         var theText = dom.source.getText(theSel[0],theSel[1]);
  158.         TEXT_TEXT.value = theText;
  159.         
  160.         // populate Link field
  161.         LIST_LINKS.set(getLinkText(theText),-1);
  162.         LIST_LINKS.setValue(getLinkText(theText),-1);
  163.     }
  164.     
  165.     TEXT_TEXT.focus(); // give focus to list
  166. }
  167.  
  168. function getLinkText(theText){
  169.     var linkText = "";
  170.     for (var i=0; i < SCHEMES.length; i++){
  171.         if (theText.indexOf(SCHEMES[i]) == 0){
  172.             linkText = theText;
  173.             break;
  174.         }
  175.     }
  176.     if (linkText == ""){
  177.         if (theText.toLowerCase().indexOf('www') == 0){
  178.             linkText = "http://" + theText;
  179.         }
  180.     }
  181.     return linkText;
  182. }
  183.